[小ネタ]でかいterraform plan結果をコピペしたい
困っていたこと
terraform plan
コマンドの結果をSlackやGitHubのPR等に貼り付けたい時があります。
小さいplan結果だったらコンソール出力内容をコピペすれば良いです。が、巨大なplan結果の場合、コマンド実行完了時には最初の方のコンソール出力がもう見れなくなってしまっている場合があります。
というわけで、
% terraform plan > planresult.txt
などとやってみるのですが、
ESC[1m # module.base.aws_security_group_rule.ingress_from_albESC[0m will be createdESC[0mESC[0m ESC[0m ESC[32m+ESC[0mESC[0m resource "aws_security_group_rule" "ingress_from_alb" { ESC[32m+ESC[0m ESC[0mESC[1mESC[0mdescriptionESC[0mESC[0m = "inbound from ALB" ESC[32m+ESC[0m ESC[0mESC[1mESC[0mfrom_portESC[0mESC[0m = 8080 ESC[32m+ESC[0m ESC[0mESC[1mESC[0midESC[0mESC[0m = (known after apply) ESC[32m+ESC[0m ESC[0mESC[1mESC[0mprotocolESC[0mESC[0m = "tcp" ESC[32m+ESC[0m ESC[0mESC[1mESC[0msecurity_group_idESC[0mESC[0m = "sg-09d9059a49bde6399 " ESC[32m+ESC[0m ESC[0mESC[1mESC[0mselfESC[0mESC[0m = false ESC[32m+ESC[0m ESC[0mESC[1mESC[0msource_security_group_idESC[0mESC[0m = "sg-055fee76b18dbcc99 " ESC[32m+ESC[0m ESC[0mESC[1mESC[0mto_portESC[0mESC[0m = 8080 ESC[32m+ESC[0m ESC[0mESC[1mESC[0mtypeESC[0mESC[0m = "ingress" }
こんな感じで要らない文字がたくさんついて非常に読みにくく実用に耐えません。
解決方法: no-colorオプションを使う
この「要らない文字」をうまく取り除く方法が無いかなーと模索していたのですが、ありました。terraform plan
に-no-color
オプションを追加します。
% terraform plan -no-color > nocolor-planresult.txt
すると、こういう出力になります。これですよ求めていたのは!「要らない文字」は色情報だったみたいですね。
# module.base.aws_security_group_rule.ingress_from_alb will be created + resource "aws_security_group_rule" "ingress_from_alb" { + description = "inbound from ALB" + from_port = 8080 + id = (known after apply) + protocol = "tcp" + security_group_id = "sg-09d9059a49bde6399" + self = false + source_security_group_id = "sg-055fee76b18dbcc99" + to_port = 8080 + type = "ingress" }
どこかに貼り付けたいだけなら
いちいち一度ファイル出力しなくてもこうした方が早いですね。
% terraform plan -no-color | pbcopy
私のPCはMacなのでpbcopyですが、Windowsだとclipというコマンドのようですね。